import * as dotenv from 'dotenv';
import * as path from 'path';
import * as fs from 'fs';

// 确保正确加载.env文件
const envPath = path.resolve(process.cwd(), '.env');
if (fs.existsSync(envPath)) {
  console.log(`已找到.env文件: ${envPath}`);
  dotenv.config({ path: envPath });
} else {
  console.warn(`警告: 未找到.env文件: ${envPath}`);
  dotenv.config();
}

import { TelegramBotService } from '../telegram-bot.service';


/**
 * Telegram Bot服务使用示例
 */
async function telegramBotExample() {
  console.log('开始运行Telegram Bot服务示例...');

  // 检查环境变量并显示状态
  console.log(`环境变量TELEGRAM_BOT_TOKEN: ${process.env.TELEGRAM_BOT_TOKEN ? '已设置' : '未设置'}`);
  if (process.env.TELEGRAM_BOT_TOKEN) {
    console.log(`TELEGRAM_BOT_TOKEN前5个字符: ${process.env.TELEGRAM_BOT_TOKEN.substring(0, 5)}...`);
  }

  // 检查环境变量中是否设置了Telegram Bot Token
  if (!process.env.TELEGRAM_BOT_TOKEN) {
    console.error('错误: 未找到TELEGRAM_BOT_TOKEN环境变量');
    console.error('请在.env文件中设置TELEGRAM_BOT_TOKEN=你的Telegram_Bot_Token');
    return;
  }

  // 获取聊天ID并检查
  const chatId = process.env.TELEGRAM_CHAT_ID || '';
  console.log(`环境变量TELEGRAM_CHAT_ID: ${chatId ? chatId : '未设置'}`);

  if (!chatId) {
    console.error('错误: 未找到TELEGRAM_CHAT_ID环境变量');
    console.error('请在.env文件中设置TELEGRAM_CHAT_ID=你的目标聊天ID');

    // 提示用户手动设置chat ID进行测试
    const testChatId = "5450043443"; // 这里填写实际的聊天ID
    console.log(`将使用硬编码的测试聊天ID: ${testChatId}`);

    // 继续使用测试ID
    return await runTelegramTests(testChatId);
  }

  // 如果环境变量中有chatId，使用它
  return await runTelegramTests(chatId);
}

/**
 * 运行Telegram测试
 * @param chatId 用于测试的聊天ID
 */
async function runTelegramTests(chatId: string) {
  try {
    console.log(`开始测试，使用聊天ID: ${chatId}`);

    // 创建Telegram Bot服务实例，代理将从全局配置自动加载
    const telegramBot = new TelegramBotService();

    // 示例1: 获取机器人信息
    console.log('\n示例1: 获取机器人信息');
    const botInfo = await telegramBot.getMe();

    if (botInfo.ok) {
      console.log('机器人信息:', botInfo.result);
    } else {
      console.error('获取机器人信息失败:', botInfo.description);
      // 如果无法获取机器人信息，可能是Token无效，终止后续示例
      return;
    }

    // 示例2: 发送简单文本消息
    console.log('\n示例2: 发送简单文本消息');
    const textResult = await telegramBot.sendMessage(
      chatId,
      '这是从OKX交易系统发送的测试消息 ' + new Date().toISOString()
    );

    console.log('发送结果:', textResult.ok ? '成功' : '失败', textResult.description || '');

    // 示例3: 发送带格式的消息
    console.log('\n示例3: 发送带格式的消息');
    const formattedResult = await telegramBot.sendMessage(
      chatId,
      '<b>粗体文本</b>\n<i>斜体文本</i>\n<code>代码文本</code>\n<pre>预格式化\n文本块</pre>',
      { parseMode: 'HTML' }
    );

    console.log('发送结果:', formattedResult.ok ? '成功' : '失败', formattedResult.description || '');

    // 示例4: 发送图片
    console.log('\n示例4: 发送图片');
    // 使用一个公共图片URL作为示例
    const photoResult = await telegramBot.sendPhoto(
      chatId,
      'https://www.okx.com/cdn/assets/imgs/221/BD1DCAD2F59198D1.png', // OKX Logo
      {
        caption: '这是OKX的Logo图片',
        parseMode: 'HTML'
      }
    );

    console.log('发送结果:', photoResult.ok ? '成功' : '失败', photoResult.description || '');

    // 示例5: 发送交易提醒
    console.log('\n示例5: 发送交易提醒');
    const alertResult = await telegramBot.sendTradeAlert(
      chatId,
      'BTC-USDT',
      60000.25,
      'BUY',
      0.05
    );

    console.log('发送结果:', alertResult.ok ? '成功' : '失败', alertResult.description || '');

  } catch (error: any) {
    console.error('Telegram Bot示例运行失败:', error.message);
    console.error('错误详情:', error);
  }

  console.log('\nTelegram Bot服务示例运行完成');
}

// 如果直接运行此文件，则执行示例
if (require.main === module) {
  telegramBotExample().catch(console.error);
}

export { telegramBotExample }; 